home *** CD-ROM | disk | FTP | other *** search
/ DS-CD ROM 2 1993 August / DS CD-ROM 2.Ausgabe (August 1993).iso / programm / ds0286b / vga256.h < prev    next >
C/C++ Source or Header  |  1992-05-20  |  88KB  |  1,470 lines

  1. /*/////////////////////////////////////////////////////////////////////////*/
  2. /*                                                                         */
  3. /*       H E A D E R      Z U R      L I B R A R Y    F Ü R     D E N      */
  4. /*                                                                         */
  5. /*          256 - Farben - VGA - Grafikmodus mit 4 Bildschirmseiten        */
  6. /*                                       */
  7. /*-------------------------------------------------------------------------*/
  8. /*       (C) 1991, Richard KOCH, H.Öschlgasse 19/4/1, A-3430 TULLN         */
  9. /*/////////////////////////////////////////////////////////////////////////*/
  10.  
  11. /*#########################################################################*/
  12. /*###################### G L O B A L E   T Y P E N ########################*/
  13. /*#########################################################################*/
  14. typedef unsigned char fontarray8 [256][8];
  15. typedef unsigned char fontarray16[256][16];
  16. typedef unsigned char palarray[256][3];
  17. typedef struct arcuskoord
  18.     {
  19.       int X, Y;
  20.       int XStart, YStart, XEnd, YEnd;
  21.     };
  22. typedef struct ellipskoord
  23.     {
  24.       int X, Y;
  25.       int XStart, YStart, XEnd, YEnd;
  26.     };
  27. typedef struct linevar
  28.     {
  29.       int Thickness;
  30.     };
  31. typedef struct textvar
  32.     {
  33.       int Horiz, Vert;
  34.       int Font;
  35.     };
  36. typedef struct viewportvar
  37.     {
  38.       unsigned int X1, Y1, X2, Y2;
  39.       int Clip;
  40.     };
  41. typedef struct pcxheader
  42.     {
  43.       unsigned char PCX_ID;
  44.       unsigned char PCXVersion;
  45.       unsigned char Encoding;
  46.       unsigned char BitsPerPixel;
  47.       unsigned int  X1,Y1,X2,Y2;
  48.       unsigned int  HorizRes;
  49.       unsigned int  VertRes;
  50.       unsigned char ColorMap[16][3];
  51.       unsigned char Reserved;
  52.       unsigned char BitPlanes;
  53.       unsigned int  BytesPerRow;
  54.       unsigned int  Palette;
  55.       unsigned char EmptyBytes[58];
  56.     };
  57. typedef struct buttonstyle
  58.     {
  59.       unsigned int      X1, Y1;                   /* linke obere Ecke */
  60.       unsigned int      Width;                    /* Breite           */
  61.       unsigned int      Height;                   /* Höhe             */
  62.       signed   char     Status;                   /* akuelle Stellung */
  63.            char far *Title;                   /* Titel d. Knopfes */
  64.     };
  65. /*#########################################################################*/
  66. /*#################### G L O B A L E   V A R I A B L E ####################*/
  67. /*#########################################################################*/
  68.         extern palarray ActPal;    /* nimmt die aktive Palette auf */
  69.         extern int      HorizScroll;/* fürs Flackern bei Scrolling */
  70. /*#########################################################################*/
  71. /*################## G L O B A L E   K O N S T A N T E ####################*/
  72. /*#########################################################################*/
  73. #define RECHTS          1,0                             /*               */
  74. #define LINKS          -1,0                             /*               */
  75. #define UNTEN           0,1                             /*               */
  76. #define OBEN            0,-1                            /*               */
  77. #define RE_UNTEN          1,1                         /* für's Scrollen */
  78. #define RE_OBEN           1,-1                            /*               */
  79. #define LI_OBEN          -1,-1                            /*               */
  80. #define LI_UNTEN         -1,1                             /*               */
  81. #define FULL             0,0,319,199,1                    /* für ViewPort  */
  82. #define NO_CLIP          0,0                              /*               */
  83. #define CLIP_RIGHT       1,0                              /* für das Zeigen*/
  84. #define CLIP_BOTTOM      0,1                              /* von PCX-Bil-  */
  85. #define CLIP_BOTH        1,1                              /* dern.         */
  86. /*-------------------------------------------------------------------------*/
  87. enum ON_OFF       { OFF, ON };
  88. /*-------------------------------------------------------------------------*/
  89. enum SAVE         { NO_SAVE, SAVE };
  90. /*-------------------------------------------------------------------------*/
  91. enum EXIT         { NO_EXIT, EXIT };
  92. /*-------------------------------------------------------------------------*/
  93. enum CHANGES      { NO_CHANGE, CHANGE };
  94. /*-------------------------------------------------------------------------*/
  95. enum LAYOUT_MODES { VERT   = 0,
  96.             ALL    = 0,
  97.             HORIZ  = 1,
  98.             DIAGON = 2   };
  99. /*-------------------------------------------------------------------------*/
  100. enum DIRECTIONS   { LEFT   = -1,
  101.             CENTER =  0,
  102.             RIGHT  =  1,
  103.             TOP    = -1,
  104.             BOTTOM =  1,
  105.             UP     =  1,
  106.             DOWN   =  0  };
  107. /*-------------------------------------------------------------------------*/
  108. enum CLIP_MODES   { CLIPNEIN,
  109.             CLIPJA       };
  110. /*-------------------------------------------------------------------------*/
  111. enum CHANGE_MODES { SOFT = -1, PENG, VERYSOFT };
  112. /*-------------------------------------------------------------------------*/
  113. enum HOLD_OR_FREE_MEM { FREE, HOLD };
  114. /*-------------------------------------------------------------------------*/
  115. enum CARET_BLINK  { SLOW   = 20,
  116.             MEDIUM = 9,
  117.             FAST   = 3   };
  118. /*-------------------------------------------------------------------------*/
  119. enum CARET_TYPES  { BLOCK,V_LINE,U_LINE };
  120. /*-------------------------------------------------------------------------*/
  121. enum BUTTON       { PRESS   = -1,
  122.             BOTH    =  0,
  123.             RELEASE = 1  };
  124. /*-------------------------------------------------------------------------*/
  125. enum BUTTON_STATUS{ RELEASED = 0,
  126.             PRESSED  = 1,
  127.             INACTIVE = -1  };
  128. /*-------------------------------------------------------------------------*/
  129. enum WRITE_MODES  { DO_COPY,
  130.             DO_AND,
  131.             DO_OR,
  132.             DO_XOR       };
  133. /*-------------------------------------------------------------------------*/
  134. enum LINE_STYLES  { NORMAL = 1,
  135.             THICK1 = 2,
  136.             THICK2 = 3   };
  137. /*-------------------------------------------------------------------------*/
  138. enum TEXT_STYLES  { DEFAULT,
  139.             SMALL,
  140.             ROM,
  141.             LIGHT        };
  142. /*-------------------------------------------------------------------------*/
  143. enum ERRORS       { InitErr       =  -1,
  144.             NoVGA         =  -2,
  145.             LFillErr      =  -6,
  146.             PFillErr      =  -7,
  147.             FFileNotFound =  -8,
  148.             FontMemErr    =  -9,
  149.             GenericErr    = -11,
  150.             FileLoadErr   = -12,
  151.             FileErr       = -13,
  152.             FontNoNotDef  = -14,
  153.             PicMemErr     = -15,
  154.             PicLoadErr    = -16,
  155.             PageLayoutErr = -17,
  156.             ActPageNotDef = -18,
  157.             VisPageNotDef = -19,
  158.             FileCreatErr  = -20,
  159.             NoPCXFile     = -21,
  160.             FontLoadErr   = -22,
  161.             PalLoadErr    = -23    };
  162. /*-------------------------------------------------------------------------*/
  163. enum STAND_COLORS { BK_GROUND,
  164.             N_BLUE,
  165.             N_GREEN,
  166.             N_CYAN,
  167.             N_RED,
  168.             N_MAGENTA,
  169.             N_BROWN,
  170.             N_WHITE,
  171.             N_GRAY,
  172.             L_BLUE,
  173.             L_GREEN,
  174.             L_CYAN,
  175.             L_RED,
  176.             L_MAGENTA,
  177.             N_YELLOW,
  178.             L_WHITE,
  179.             N_BLACK      };
  180. /*-------------------------------------------------------------------------*/
  181. /* Die folgenden Konstanten gelten nur für die Farbpalette "SORTIERT.PAL"! */
  182. /*-------------------------------------------------------------------------*/
  183. enum GRAYS        { GRAY1  = 16, GRAY2  = 17, GRAY3  = 18, GRAY4  = 19,
  184.             GRAY5  = 20, GRAY6  = 21, GRAY7  = 22, GRAY8  = 23,
  185.             GRAY9  = 24, GRAY10 = 25, GRAY11 = 26, GRAY12 = 27,
  186.             GRAY13 = 28, GRAY14 = 29, GRAY15 = 30, GRAY16 = 31 };
  187. /*-------------------------------------------------------------------------*/
  188. enum BLUES        { BLUE1  = 32, BLUE2  = 33, BLUE3  = 34, BLUE4  = 35,
  189.             BLUE5  = 36, BLUE6  = 37, BLUE7  = 38, BLUE8  = 39,
  190.             BLUE9  = 40, BLUE10 = 41, BLUE11 = 42, BLUE12 = 43,
  191.             BLUE13 = 44, BLUE14 = 45, BLUE15 = 46, BLUE16 = 47 };
  192. /*-------------------------------------------------------------------------*/
  193. enum GREENS       { GREEN1  = 64, GREEN2  = 65, GREEN3  = 66, GREEN4  = 67,
  194.             GREEN5  = 68, GREEN6  = 69, GREEN7  = 70, GREEN8  = 71,
  195.             GREEN9  = 72, GREEN10 = 73, GREEN11 = 74, GREEN12 = 75,
  196.             GREEN13 = 76, GREEN14 = 77, GREEN15 = 78, GREEN16 = 79 };
  197. /*-------------------------------------------------------------------------*/
  198. enum CYANS        { CYAN1  = 96,  CYAN2  = 97,  CYAN3  = 98,  CYAN4  = 99,
  199.             CYAN5  = 100, CYAN6  = 101, CYAN7  = 102, CYAN8  = 103,
  200.             CYAN9  = 104, CYAN10 = 105, CYAN11 = 106, CYAN12 = 107,
  201.             CYAN13 = 108, CYAN14 = 109, CYAN15 = 110, CYAN16 = 111 };
  202. /*-------------------------------------------------------------------------*/
  203. enum REDS         { RED1  = 48, RED2  = 49, RED3  = 50, RED4  = 51,
  204.             RED5  = 52, RED6  = 53, RED7  = 54, RED8  = 55,
  205.             RED9  = 56, RED10 = 57, RED11 = 58, RED12 = 59,
  206.             RED13 = 60, RED14 = 61, RED15 = 62, RED16 = 63 };
  207. /*-------------------------------------------------------------------------*/
  208. enum MAGENTAS     { MAG1  = 80, MAG2  = 81, MAG3  = 82, MAG4  = 83,
  209.             MAG5  = 84, MAG6  = 85, MAG7  = 86, MAG8  = 87,
  210.             MAG9  = 88, MAG10 = 89, MAG11 = 90, MAG12 = 91,
  211.             MAG13 = 92, MAG14 = 93, MAG15 = 94, MAG16 = 95 };
  212. /*-------------------------------------------------------------------------*/
  213. enum BROWNS       { BROWN1  = 112, BROWN2  = 113, BROWN3  = 114, BROWN4  = 115,
  214.             BROWN5  = 116, BROWN6  = 117, BROWN7  = 118, BROWN8  = 119,
  215.             BROWN9  = 120, BROWN10 = 121, BROWN11 = 122, BROWN12 = 123,
  216.             BROWN13 = 124, BROWN14 = 125, BROWN15 = 126, BROWN16 = 127 };
  217. /*-------------------------------------------------------------------------*/
  218. enum YELLOWS      { YEL1  = 128, YEL2  = 129, YEL3  = 130, YEL4  = 131,
  219.             YEL5  = 132, YEL6  = 133, YEL7  = 134, YEL8  = 135,
  220.             YEL9  = 136, YEL10 = 137, YEL11 = 138, YEL12 = 139,
  221.             YEL13 = 140, YEL14 = 141, YEL15 = 142, YEL16 = 143 };
  222. /*-------------------------------------------------------------------------*/
  223. enum LIGHTBLUES   { LBLUE1  = 144, LBLUE2  = 145, LBLUE3  = 146, LBLUE4  = 147,
  224.             LBLUE5  = 148, LBLUE6  = 149, LBLUE7  = 150, LBLUE8  = 151,
  225.             LBLUE9  = 152, LBLUE10 = 153, LBLUE11 = 154, LBLUE12 = 155,
  226.             LBLUE13 = 156, LBLUE14 = 157, LBLUE15 = 158, LBLUE16 = 159 };
  227. /*-------------------------------------------------------------------------*/
  228. enum ERDEN        { ERD1  = 240, ERD2  = 241, ERD3  = 242, ERD4  = 243,
  229.             ERD5  = 244, ERD6  = 245, ERD7  = 246, ERD8  = 247,
  230.             ERD9  = 248, ERD10 = 249, ERD11 = 250, ERD12 = 251,
  231.             ERD13 = 252, ERD14 = 253, ERD15 = 254, ERD16 = 255 };
  232. /*-------------------------------------------------------------------------*/
  233. enum G2BLUES      { G2B1  = 224, G2B2  = 225, G2B3  = 226, G2B4  = 227,
  234.             G2B5  = 228, G2B6  = 229, G2B7  = 230, G2B8  = 231,
  235.             G2B9  = 232, G2B10 = 233, G2B11 = 234, G2B12 = 235,
  236.             G2B13 = 236, G2B14 = 237, G2B15 = 238, G2B16 = 239 };
  237. /*-------------------------------------------------------------------------*/
  238. enum R2BLUES      { R2B1  = 208, R2B2  = 209, R2B3  = 210, R2B4  = 211,
  239.             R2B5  = 212, R2B6  = 213, R2B7  = 214, R2B8  = 215,
  240.             R2B9  = 216, R2B10 = 217, R2B11 = 218, R2B12 = 219,
  241.             R2B13 = 220, R2B14 = 221, R2B15 = 222, R2B16 = 223 };
  242. /*-------------------------------------------------------------------------*/
  243. enum R2WHITES     { R2WHITE1  = 144, R2WHITE2  = 145, R2WHITE3  = 146,
  244.             R2WHITE4  = 147, R2WHITE5  = 148, R2WHITE6  = 149,
  245.             R2WHITE7  = 150, R2WHITE8  = 151, R2WHITE9  = 152,
  246.             R2WHITE10 = 153, R2WHITE11 = 154, R2WHITE12 = 155,
  247.             R2WHITE13 = 156, R2WHITE14 = 157, R2WHITE15 = 158,
  248.             R2WHITE16 = 159 };
  249. /*-------------------------------------------------------------------------*/
  250. enum CYBLUES      { CYBLUE1  = 168, CYBLUE2  = 169, CYBLUE3  = 170,
  251.             CYBLUE4  = 171, CYBLUE5  = 172, CYBLUE6  = 173,
  252.             CYBLUE7  = 174, CYBLUE8  = 175 };
  253. /*-------------------------------------------------------------------------*/
  254. enum DROSAS       { DROSA1  = 160, DROSA2  = 161, DROSA3  = 162,
  255.             DROSA4  = 163, DROSA5  = 164, DROSA6  = 165,
  256.             DROSA7  = 166, DROSA8  = 167 };
  257. /*-------------------------------------------------------------------------*/
  258. enum REDGREENS    { REDGRN1  = 184, REDGRN2  = 185, REDGRN3  = 186,
  259.             REDGRN4  = 187, REDGRN5  = 188, REDGRN6  = 189,
  260.             REDGRN7  = 190, REDGRN8  = 191 };
  261. /*-------------------------------------------------------------------------*/
  262. enum YELGREENS    { YELGRN1  = 176, YELGRN2  = 177, YELGRN3  = 178,
  263.             YELGRN4  = 179, YELGRN5  = 180, YELGRN6  = 181,
  264.             YELGRN7  = 182, YELGRN8  = 183 };
  265. /*#########################################################################*/
  266. /*################ G L O B A L E     F U N K T I O N E N ##################*/
  267. /*#########################################################################*/
  268. /*========================================================================*/
  269. /*                         Funktion   A R C U S                           */
  270. /*------------------------------------------------------------------------*/
  271. /*   Zeichnet einen Kreisbogen.                                           */
  272. /*   Parameter: Mittelpunkt (X,Y)                                         */
  273. /*              Startwinkel in Grad (0 - 360)                             */
  274. /*              Endwinkel in Grad (0 - 360)                               */
  275. /*        Radius (Radius)                                           */
  276. /*   Die Farbe des Kreisbogens entspricht der aktuellen Vordergrundfarbe. */
  277. /*========================================================================*/
  278.  
  279.         void far Arcus         (int X, int Y, int StartW, int EndW,
  280.                     int Radius);
  281.  
  282. /*========================================================================*/
  283. /*                      Funktion    B U T T O N                           */
  284. /*------------------------------------------------------------------------*/
  285. /*   Bildet einen 3D-Druckknopf mit einer Aufschrift. Einer der Buch-     */
  286. /*      staben kann hervorgehoben werden.                                 */
  287. /*   Parameter : die Koordinaten des Knopfes (X1, Y1, X2, Y2)             */
  288. /*               der Text für die Aufschrift (Text)                       */
  289. /*               der hervorzuhebende Buchstabe (Highlight)                */
  290. /*               die Farbe des hervorzuhebenden Buchstabens (HLFarbe)     */
  291. /*               die Nummer des Speicher-Puffers (0-29)                   */
  292. /*------------------------------------------------------------------------*/
  293. /*   Bemerkung : Wird kein hervorgehobener Buchstaben gewünscht, so ist   */
  294. /*               für die beiden letzten Parameter eine Zahl < 0 anzu-     */
  295. /*               geben.                                                   */
  296. /*               Bevor ein Knopf mit einer bereits verwendeten Nummer er- */
  297. /*               zeugt wird, muß dieser mit FREEBUTTON gelöscht werden.   */
  298. /*========================================================================*/
  299.  
  300.         void far Button        (int X1, int Y1, int X2, int Y2,
  301.                     char far *Text, int Highlight,
  302.                     unsigned char HLFarbe, int BufNr);
  303.  
  304. /*========================================================================*/
  305. /*                        Funktion   C A R E T                            */
  306. /*------------------------------------------------------------------------*/
  307. /*   Steuert den blinkenden Textcursor (Caret).                           */
  308. /*   Parameter: den Namen des Strings, mit dem das Caret verbunden ist.   */
  309. /*   Bemerkung: Dem Aufruf von CARET muß ein Aufruf von MAKECARET und     */
  310. /*              CARETSHOW vorangegangen sein.                             */
  311. /*========================================================================*/
  312.  
  313.         void far Caret         (char far *CaretString);
  314.  
  315. /*========================================================================*/
  316. /*                        Funktion   C A R E T H I D E                    */
  317. /*------------------------------------------------------------------------*/
  318. /*   Versteckt das sichtbare Caret.                                       */
  319. /*   Parameter: keine.                                                    */
  320. /*   Bemerkung: Dem Aufruf von CARETHIDE muß ein Aufruf von MAKECARET und */
  321. /*              CARETSHOW vorangegangen sein.                             */
  322. /*========================================================================*/
  323.  
  324.         void far CaretHide     ();
  325.  
  326. /*========================================================================*/
  327. /*                        Funktion   C A R E T S H O W                    */
  328. /*------------------------------------------------------------------------*/
  329. /*   Bringt das Caret auf den Bildschirm.                                 */
  330. /*   Parameter: keine.                                                    */
  331. /*   Bemerkung: Dem Aufruf von CARETSHOW muß ein Aufruf von MAKECARET     */
  332. /*              vorangegangen sein.                                       */
  333. /*========================================================================*/
  334.  
  335.         void far CaretShow     ();
  336.  
  337. /*========================================================================*/
  338. /*                         Funktion   C I R C 2 5 6                       */
  339. /*------------------------------------------------------------------------*/
  340. /*   Zeichnet einen Kreis.                                                */
  341. /*   Parameter: Mittelpunkt (X,Y)                                         */
  342. /*              Radius (Radius)                                           */
  343. /*   Die Farbe des Kreises entspricht der aktuellen Vordergrundfarbe.     */
  344. /*------------------------------------------------------------------------*/
  345. /*   Der Algorithmus stammt (abgesehen von kleinen Änderungen aus dem     */
  346. /*      Buch "Graphik in C"                          */
  347. /*========================================================================*/
  348.  
  349.         void far Circ256       (int X, int Y, int Radius);
  350.  
  351. /*=========================================================================*/
  352. /*                   Funktion  C L E A R A L L P A G E S                   */
  353. /*-------------------------------------------------------------------------*/
  354. /*    Löscht alle Bildschirmseiten mit der aktuellen Hintergrundfarbe.     */
  355. /*=========================================================================*/
  356.  
  357.         void far ClearAllPages ();
  358.  
  359. /*=========================================================================*/
  360. /*                      Funktion  C L E A R P A G E                        */
  361. /*-------------------------------------------------------------------------*/
  362. /* Löscht die aktuelle Bildschirmseite mit der aktuellen Hintergrundfarbe. */
  363. /*=========================================================================*/
  364.  
  365.         void far ClearPage     ();
  366.  
  367. /*========================================================================*/
  368. /*                      Funktion    C L E A R V I E W P                   */
  369. /*------------------------------------------------------------------------*/
  370. /*   Löscht das aktuelle Sichtfenster mit der aktuellen Hintergrundfarbe. */
  371. /*========================================================================*/
  372.  
  373.         void far ClearViewP    ();
  374.  
  375. /*=========================================================================*/
  376. /*                      Funktion  C L O S E 2 5 6                          */
  377. /*-------------------------------------------------------------------------*/
  378. /*   Beendet den 256-Farben-VGA-Modus mittels einer Assembler-Routine      */
  379. /*   und gibt den belegten Speicher frei.                                  */
  380. /*=========================================================================*/
  381.  
  382.         void far Close256      ();
  383.  
  384. /*========================================================================*/
  385. /*                      Funktion   C O P Y P A G E                        */
  386. /*------------------------------------------------------------------------*/
  387. /*   Kopiert eine Bildschirmseite in eine andere.                         */
  388. /*   Parameter: die Nummer der Seite, die kopiert werden soll.            */
  389. /*              die Nummer der Ziel-Bildschirmseite.                      */
  390. /*========================================================================
  391.  
  392. extern         void far CopyPage      (int SrcPage, int DestPage);
  393.  
  394.   ========================================================================*/
  395. /*                  Funktion   D A R K E N S C R E E N                    */
  396. /*------------------------------------------------------------------------*/
  397. /*   Verdunkelt langsam den Bildschirm.                                   */
  398. /*   Parameter: 0 , wenn Programm nach der Funktion NICHT beendet wird,   */
  399. /*              1 , wenn Programm nach der Funktion beendet wird.         */
  400. /*========================================================================*/
  401.  
  402.         void far DarkenScreen  (int Exit);
  403.  
  404. /*========================================================================*/
  405. /*                      Funktion   D I S P L A Y P C X                    */
  406. /*------------------------------------------------------------------------*/
  407. /*   Bringt ein Bild, das als PCX-Datei vorliegt, auf den Bildschirm.     */
  408. /*   Parameter: linke obere Ecke (X,Y)                            */
  409. /*              die Art des Clipping: CLIP_RIGHT  : nur rechts,           */
  410. /*                                    CLIP_BOTTOM : nur unten,            */
  411. /*                                    CLIP_BOTH   : beide Seiten,         */
  412. /*                                    NO_CLIP     : nichts beschnitten.   */
  413. /*              den Namen der Bilddatei (Erweiterung nicht erforderlich)  */
  414. /*              den Namen einer Datei, in der die zum Bild gehörige       */
  415. /*          Farbpalette gespeichert werden soll. (Sollte dies nicht */
  416. /*              erwünscht sein, so muß ein Leerstring "" übergeben      */
  417. /*              werden.                                                 */
  418. /*              0 oder 1, je nachdem, ob die Palette, die dem PCX-Bild    */
  419. /*              zugrunde liegt, in die Register geladen werden soll.    */
  420. /*------------------------------------------------------------------------*/
  421. /*   Bemerkung: Verläuft alles fehlerfrei, so wird 0, andernfalls -1 zu-  */
  422. /*                rückgegeben und Fehlercodes gesetzt.                    */
  423. /*              Alle schon vorher aufgetretenen Fehlercodes werden ge-    */
  424. /*                löscht.                                                 */
  425. /*              Die Clipping-Angaben beziehen sich nur auf den Bildschirm,*/
  426. /*                nicht auf ein etwaiges Zeichenfenster.                  */
  427. /*========================================================================*/
  428.  
  429.         int  far DisplayPCX    (int X, int Y, int ClipRight,
  430.                     int ClipBottom, char far *FileName,
  431.                     char far *WritePalToFile,
  432.                     int LoadPalette);
  433.  
  434. /*========================================================================*/
  435. /*                      Funktion   E L L I P 2 5 6                        */
  436. /*------------------------------------------------------------------------*/
  437. /*   Zeichnet einen elliptischen Bogen.                                   */
  438. /*   Parameter: Mittelpunkt (X,Y)                                         */
  439. /*              Startwinkel in Grad (0 - 360)                             */
  440. /*              Endwinkel in Grad (0 - 360)                               */
  441. /*        horizontaler Radius (XRad)                                */
  442. /*            vertikaler Radius (YRad)                                  */
  443. /*   Die Farbe der Ellipse entspricht der aktuellen Vordergrundfarbe.     */
  444. /*========================================================================*/
  445.  
  446.         void far Ellip256      (int X, int Y, int StartW, int EndW,
  447.                     int XRad, int YRad);
  448.  
  449. /*=========================================================================*/
  450. /*                      Funktion  E R R O R M E S S                        */
  451. /*-------------------------------------------------------------------------*/
  452. /*   Liefert für alle Errorcodes eine entsprechende Meldung als String     */
  453. /*   zurück.                                                               */
  454. /*   Parameter : der Errorcode.                                            */
  455. /*=========================================================================*/
  456.  
  457.         char far *ErrorMess    (int Errorcode);
  458.  
  459. /*========================================================================*/
  460. /*                  Funktion   F I L L E D E L L I P                      */
  461. /*------------------------------------------------------------------------*/
  462. /*   Zeichnet einen Kreis oder eine Ellipse und füllt es mit einer Farbe. */
  463. /*   Parameter: Parameter der Funktion ELLIPSE                            */
  464. /*              Füll-Farbe                                                */
  465. /*========================================================================*/
  466.  
  467.         void far FilledEllip   (int X, int Y, int XRad, int YRad,
  468.                     unsigned char FuellFarbe);
  469.  
  470. /*=========================================================================*/
  471. /*                    Funktion  F I L L E D R E C T                        */
  472. /*-------------------------------------------------------------------------*/
  473. /*   Zeichnet ein gefülltes Rechteck mit den Koordinaten:                  */
  474. /*      X1,Y1    linkes oberes Eck,                                        */
  475. /*      X2,Y2    rechtes unteres Eck.                                      */
  476. /*   Weiters ist Füllfarbe anzugeben.                                      */
  477. /*   Die Randfarbe entspricht der aktuellen Vordergrundfarbe.              */
  478. /*   Ist die Füllfarbe Null, so wird das Rechteck nicht gefüllt, bzw.      */
  479. /*      die Füllfarbe ist gleich der aktuellen Hintergrundfarbe            */
  480. /*=========================================================================*/
  481.  
  482.         void far FilledRect    (int X1, int Y1, int X2, int Y2,
  483.                     unsigned char Fuellfarbe);
  484.  
  485. /*========================================================================*/
  486. /*   Funktionen    F R E E B U T T O N ,   F R E E A L L B U T T O N S    */
  487. /*------------------------------------------------------------------------*/
  488. /*   Deaktiviert einen oder alle zuvor aktiv gewesene(n) Druckknopf(e).   */
  489. /*   Parameter: die Nummer des Knopfes (0 - 39) (nur FREEBUTTON).         */
  490. /*========================================================================*/
  491.  
  492.         void far FreeButton    (unsigned int Nr);
  493.         void far FreeAllButtons();
  494.  
  495. /*========================================================================*/
  496. /*             Funktionen    F R E E P I C B U F F E R ,                  */
  497. /*                           F R E E A L L P I C B U F F E R S            */
  498. /*------------------------------------------------------------------------*/
  499. /*   Gibt einen zuvor mit SAVEPIC allokierten Speicher für einen Bild-    */
  500. /*      schirmausschnitt wieder frei.                                     */
  501. /*   Parameter: die Nummer des Puffers (0 - 9) (nur FREEPICBUFFER)        */
  502. /*========================================================================*/
  503.  
  504.         void far FreePicBuffer (unsigned int Nr);
  505.         void far FreeAllPicBuffers ();
  506.  
  507. /*========================================================================*/
  508. /*                    Funktion    G E T A C T P A G E                     */
  509. /*------------------------------------------------------------------------*/
  510. /*   Ermittelt die gerade aktive Bildschirmseite.                         */
  511. /*   Parameter: keine.                                                    */
  512. /*   Rückgabe : die Nummer der Bildschirmseite.                           */
  513. /*========================================================================*/
  514.  
  515.         int  far GetActPage    ();
  516.  
  517. /*========================================================================*/
  518. /*                     Funktion    G E T A C T P A L                      */
  519. /*------------------------------------------------------------------------*/
  520. /*   Gibt Auskunft über die gerade aktive Farbpalette.                    */
  521. /*   Möglichkeiten : "BIOS"          : Es ist die Palette des BIOS aktiv. */
  522. /*                   "Dateiname.pal" : Es wurde eine Farbpalette von      */
  523. /*                                     Palettendatei geladen.             */
  524. /*   Parameter : keine.                                                   */
  525. /*========================================================================*/
  526.  
  527.         char far *GetActPal    ();
  528.  
  529. /*========================================================================*/
  530. /*                     Funktion   G E T A R C U S                         */
  531. /*------------------------------------------------------------------------*/
  532. /*   Gibt Auskunft über die Werte des letzten Aufrufs von ARCUS.          */
  533. /*   Parameter: Variable von Typ ARCUSKOORD, die die Werte aufnimmt.      */
  534. /*------------------------------------------------------------------------*/
  535. /*   Hinweis : Wurde ARCUS noch nicht aufgerufen oder wurde mit ARCUS     */
  536. /*             ein voller Kreis gebildet, so sind die Werte -1 und der    */
  537. /*             allgemeine Fehlercode -11 wird gesetzt.                    */
  538. /*========================================================================*/
  539.  
  540.         void far GetArcus      (struct arcuskoord far *ArcusKoord);
  541.  
  542. /*========================================================================*/
  543. /*                     Funktion   G E T B U T T O N                       */
  544. /*------------------------------------------------------------------------*/
  545. /*   Gibt alle wichtigen Daten eines Druckknopfs zurück.                  */
  546. /*   Parameter: die Nummer des Knopfes, dessen Werte ermittelt werden,    */
  547. /*              Variable von Typ BUTTONSTYLE, die die Werte aufnimmt.     */
  548. /*========================================================================*/
  549.  
  550.         void far GetButton     (int NrOfButton,
  551.                     struct buttonstyle far *Butt);
  552.  
  553. /*========================================================================*/
  554. /*                     Funktion   G E T E L L I P S E                     */
  555. /*------------------------------------------------------------------------*/
  556. /*   Gibt Auskunft über die Werte des letzten Aufrufs von ELLIPSE.        */
  557. /*   Parameter: Variable von Typ ELLIPSKOORD, die die Werte aufnimmt.     */
  558. /*------------------------------------------------------------------------*/
  559. /*   Hinweis : Wurde ELLIPSE noch nicht aufgerufen oder eine volle        */
  560. /*             Ellipse gebildet, so sind die Werte -1 und der allgemeine  */
  561. /*             Fehlercode -11 wird gesetzt.                               */
  562. /*========================================================================*/
  563.  
  564.         void far GetEllipse    (struct ellipskoord far *EllipsKoord);
  565.  
  566. /*=========================================================================*/
  567. /*                      Funktion  G E T E R R O R 2 5 6                    */
  568. /*-------------------------------------------------------------------------*/
  569. /*   Liefert den Errorcode der letzten Operation und setzt denselben       */
  570. /*      wieder auf 0 zurück.                                               */
  571. /*   Bei Fehler können folgende Codes auftreten:                           */
  572. /*      (Turbo-kompatible Codes)                                           */
  573. /*      -1    Initialisierung des 256-Farben-Modus nicht gelungen          */
  574. /*      -2    Keine VGA-Karte im System vorhanden                          */
  575. /*      -6    Kein Speicher zum Linien-Füllen mehr vorhanden               */
  576. /*      -7    Kein Speicher zum Punkt-Füllen mehr vorhanden                */
  577. /*      -8    Zeichensatzdatei wurde nicht gefunden                        */
  578. /*      -9    Nicht genug Speicher für Zeichensatz                         */
  579. /*      -11   unklassifizierbarer Fehler                                   */
  580. /*      -12   Laden einer Datei schlug fehl                                */
  581. /*      -13   Datei ungültig, falsch, zerstört                             */
  582. /*      -14   Kennzahl für Zeichensatz nicht definiert                     */
  583. /*      (zusätzliche Codes eigener Definition)                             */
  584. /*      -15   zuwenig Speicher für Bildschirmausschnitt                    */
  585. /*      -16   fehlgeschlagener Ladevorgang eines Bildschirmausschnittes    */
  586. /*      -17   Anordnung der Bildschirmseiten nicht definiert               */
  587. /*      -18   Nummer der aktiven Bildschirmseite nicht vorgesehen          */
  588. /*      -19   Nummer der sichtbaren Bildschirmseite nicht vorgesehen       */
  589. /*      -20   Datei kann nicht angelegt werden.                            */
  590. /*      -21   Angegebene Datei keine PCX-Datei.                            */
  591. /*      -22   Fehler beim Laden einer Font-Datei.                          */
  592. /*      -23   Fehler beim Laden einer Paletten-Datei.                      */
  593. /*=========================================================================*/
  594.  
  595.         int  far GetError256   ();
  596.  
  597. /*========================================================================*/
  598. /*             Funktionen  G E T F C O L O R ,   G E T B C O L O R        */
  599. /*------------------------------------------------------------------------*/
  600. /*   Geben den entsprechenden aktuellen Farbwert zurück.                  */
  601. /*========================================================================*/
  602.  
  603.        unsigned char far GetBColor     ();
  604.        unsigned char far GetFColor     ();
  605.  
  606. /*========================================================================*/
  607. /*                      Funktion    G E T L I N E                         */
  608. /*------------------------------------------------------------------------*/
  609. /*   Liefert die aktuellen Einstellungen bezüglich Linien zurück.         */
  610. /*   Parameter : Struktur-Variable vom Typ 'linevar'                      */
  611. /*========================================================================*/
  612.  
  613.         void far GetLine       (struct linevar far *LVar);
  614.  
  615. /*========================================================================*/
  616. /*                       Funktion   G E T P I C T U R E                   */
  617. /*------------------------------------------------------------------------*/
  618. /*   Speichert einen Bildschirmausschnitt in einem Puffer.                */
  619. /*   Parameter : die linke obere Ecke des Ausschnitts (X1,Y1)             */
  620. /*               die rechte, untere Ecke des Ausschnitts (X2,Y2)          */
  621. /*               Zeiger auf den Puffer, in dem der Ausschnitt gespeichert */
  622. /*                  werden soll.                                          */
  623. /*   Bemerkung : Vor Aufruf dieser Funktion muß erst Speicher für den     */
  624. /*                  Bildschirmausschnitt reserviert werden!               */
  625. /*========================================================================
  626.  
  627. extern         void far GetPicture    (int X1, int Y1, int X2, int Y2,
  628.                     void far *Puffer);
  629.  
  630.   ========================================================================*/
  631. /*                       Funktion   G E T P I X                           */
  632. /*------------------------------------------------------------------------*/
  633. /*   Stellt die Farbe eines Bildpunktes fest.                             */
  634. /*   Parameter : die Koordinaten des Bildpunktes (X,Y)                    */
  635. /*   Rückgabe  : die Farbe des Bildpunktes.                               */
  636. /*========================================================================
  637.  
  638. extern unsigned char far GetPix        (int Spalte, int Zeile);
  639.  
  640.   ========================================================================*/
  641. /*             Funktionen   G E T S C R X ,   G E T S C R Y               */
  642. /*------------------------------------------------------------------------*/
  643. /*   Bestimmen die Koordinaten der linken oberen Ecke des sichtbaren      */
  644. /*       Bildschirmes.                                                    */
  645. /*   Parameter : keine.                                                   */
  646. /*   Rückgabe  : GETSCRX : die X-Koordinate,                              */
  647. /*               GETSCRY : die Y-Koordinate des virtuellen Bildschirms.   */
  648. /*========================================================================*/
  649.  
  650.        unsigned int  far GetScrX       ();
  651.        unsigned    int  far GetScrY       ();
  652.  
  653. /*========================================================================*/
  654. /*                       Funktion    G E T T X T                          */
  655. /*------------------------------------------------------------------------*/
  656. /*   Liefert die aktuellen Einstellungen der Textausgabe zurück.          */
  657. /*   Parameter : Struktur-Variable vom Typ 'textvar'                      */
  658. /*========================================================================*/
  659.  
  660.         void far GetTxt        (struct textvar far *TVar);
  661.  
  662. /*========================================================================*/
  663. /*                       Funktion   G E T T X T H E I G H T                         */
  664. /*------------------------------------------------------------------------*/
  665. /*   Gibt die Höhe des aktuellen Zeichensatzes in Pixeln zurück.          */
  666. /*========================================================================*/
  667.  
  668.        unsigned    int  far GetTxtHeight  ();
  669.  
  670. /*========================================================================*/
  671. /*                       Funktion   G E T T X T W I D T H                 */
  672. /*------------------------------------------------------------------------*/
  673. /*   Gibt die Länge eines String in Pixeln zurück.                        */
  674. /*   Parameter: den String.                                               */
  675. /*========================================================================*/
  676.  
  677.        unsigned int  far GetTxtWidth   (char far *Text);
  678.  
  679. /*========================================================================*/
  680. /*                       Funktion    G E T V I E W P                      */
  681. /*------------------------------------------------------------------------*/
  682. /*   Liefert die aktuellen Einstellungen des Sichtfensters zurück.        */
  683. /*     Liefert Bildschirmwerte, Seiten werden nicht einbezogen!           */
  684. /*   Parameter : Struktur-Variable vom Typ 'viewportvar'                  */
  685. /*========================================================================*/
  686.  
  687.         void far GetViewP      (struct viewportvar far *VPVar);
  688.  
  689. /*========================================================================*/
  690. /*                    Funktion    G E T V I S P A G E                     */
  691. /*------------------------------------------------------------------------*/
  692. /*   Ermittelt die gerade sichtbare Bildschirmseite.                      */
  693. /*   Parameter: keine.                                                    */
  694. /*   Rückgabe : die Nummer der Bildschirmseite.                           */
  695. /*========================================================================*/
  696.  
  697.         int  far GetVisPage    ();
  698.  
  699. /*========================================================================*/
  700. /*             Funktionen    G E T X 2 5 6 ,   G E T Y 2 5 6              */
  701. /*------------------------------------------------------------------------*/
  702. /*   Geben die aktuellen Koordinaten des Graphik-Cursors zurück.          */
  703. /*========================================================================*/
  704.  
  705.        unsigned int  far GetX256       ();
  706.        unsigned int  far GetY256       ();
  707.  
  708. /*========================================================================*/
  709. /*                         Funktion  H L I N E                            */
  710. /*------------------------------------------------------------------------*/
  711. /*    Zeichnet eine horizontale Linie.                                    */
  712. /*    Die Farbe der Linie entspricht der aktuellen Vordergrundfarbe.      */
  713. /*    Parameter : der Anfangspunkt (X1,Y)                                 */
  714. /*                der Endpunkt (X2,Y)                                     */
  715. /*========================================================================*/
  716.  
  717.         void far HLine         (int X1, int Y, int X2);
  718.  
  719. /*=========================================================================*/
  720. /*                      Funktion  I N I T 2 5 6                            */
  721. /*-------------------------------------------------------------------------*/
  722. /*   Initialisiert den 256-Farben-VGA-Modus mittels einer Assembler-       */
  723. /*      Routine, lädt die Default-Schriftdatei, sichert die BIOS-Farb-     */
  724. /*      palette und lädt die Farbpalette SORTIERT.PAL.                     */
  725. /*      Weiters werden horizontal nebeneinander liegende Bildschirmseiten  */
  726. /*      eingestellt und der Sound-Generator initialisiert.                 */
  727. /*   Parameter : keine.                                                    */
  728. /*=========================================================================*/
  729.  
  730.         void far Init256       ();
  731.  
  732. /*========================================================================*/
  733. /*                Funktion   I N S T A L L N E W F O N T                  */
  734. /*------------------------------------------------------------------------*/
  735. /*   Installiert einen fremden Zeichensatz.                               */
  736. /*   Folgende Bedingungen muß der neue Zeichensatz erfüllen:              */
  737. /*     1) die Font-Datei muß die Extension .FNT haben.                    */
  738. /*     2) die Breite der Zeichen muß 8 Pixel sein.                        */
  739. /*     3) die Höhe der Zeichen muß 8 oder 16 Pixel sein.                  */
  740. /*     4) die Zeichensatzdatei darf vor der Bearbeitung mit MAKEFONTFILE  */
  741. /*        nur soviele Bytes haben, als das Produkt aus der Höhe und der   */
  742. /*        Zahl der Zeichen (256) ergibt, also 2048 oder 4096.             */
  743. /*     5) die Datei muß mit MAKEFONTFILE bearbeitet sein, d.h. einen      */
  744. /*        Header von 2 Bytes (Höhe, Breite) beinhalten.                   */
  745. /*   Parameter : der Name der Font-Datei.                                 */
  746. /*   Verläuft die Installation erfolgreich, wird die Zahl zurückgegeben,  */
  747. /*     die von nun an dem neuen Font zugeordnet ist und der Funktion      */
  748. /*     TEXTSTYLE übergeben werden kann. Schlug die Installation fehl, ist */
  749. /*     das Ergebnis -1. Weiters werden noch diverse Errorcodes gesetzt,   */
  750. /*     die angeben, warum die Installation fehlgeschlagen ist (abzufragen */
  751. /*     mit SAYERROR().                                                    */
  752. /*========================================================================*/
  753.  
  754.         int  far InstallNewFont(char far *FileName);
  755.  
  756. /*========================================================================*/
  757. /*                         Funktion  L I N E 2 5 6                        */
  758. /*------------------------------------------------------------------------*/
  759. /*    Zeichnet eine Linie von den Anfangskoordinaten X1,Y1 zu den End-    */
  760. /*      koordinaten X2,Y2.                                                */
  761. /*    Die Farbe der Linie entspricht der aktuellen Vordergrundfarbe.      */
  762. /*    Diese Prozedur ist für nicht-horizontale und nicht-vertikale Linien */
  763. /*      gedacht. Für horizontale und vertikale Linien sind die Assembler- */
  764. /*    funktionen HLINE und VLINE (wegen der Geschwindigkeit) besser     */
  765. /*      geeignet.                                                         */
  766. /*    Der Algorithmus stammt aus dem Buch "Grafik in C".                  */
  767. /*========================================================================*/
  768.  
  769.         void far Line256       (int X1, int Y1, int X2, int Y2);
  770.  
  771. /*========================================================================*/
  772. /*                     Funktion    L I N E F I L L                        */
  773. /*------------------------------------------------------------------------*/
  774. /*   Füllt einen umschlossenen Bereich mit einer Farbe.                   */
  775. /*   Parameter : Einstiegsspalte (X)                                      */
  776. /*               Einstiegszeile  (Y)                                      */
  777. /*               die Füllfarbe   (Farbe)                                  */
  778. /*               die Randfarbe   (Rand)                                   */
  779. /*------------------------------------------------------------------------*/
  780. /*   Bemerkung : Es wird nicht garantiert, daß eine besonders komplizier- */
  781. /*               te Fläche von jedem Punkt aus vollständig gefüllt wird.  */
  782. /*               Der Einstiegspunkt sollte am besten an der breitesten,   */
  783. /*               nicht unterbrochenen Stelle liegen. Möglicherweise müssen*/
  784. /*               verschiedene Punkte ausprobiert werden.                  */
  785. /*               Da der verwendete Algorithmus wesentlich schneller ist,  */
  786. /*               als der in den TURBO-Sprachen verwendete, sollte seine   */
  787. /*               Geschwindigkeit nicht durch die Vermeidung ALLER Even-   */
  788. /*               tualitäten beeinträchtigt werden.                        */
  789. /*========================================================================*/
  790.  
  791.         void far LineFill      (int X, int Y, unsigned char Farbe,
  792.                     unsigned char Rand);
  793.  
  794. /*========================================================================*/
  795. /*        Funktionen    L I N E T O 2 5 6 ,   L I N E R E L 2 5 6         */
  796. /*------------------------------------------------------------------------*/
  797. /*   LineTo256 : zeichnet eine Linie von der aktuellen Cursorposition zu  */
  798. /*                dem angegebenen Punkt.                                  */
  799. /*               Parameter : die X-Koordinate des Endpunktes der Linie,   */
  800. /*                           die Y-Koordinate des Endpunktes der Linie.   */
  801. /*   LineRel256: zeichnet eine Linie relativ zur aktuellen Position des   */
  802. /*               Cursors.                                                 */
  803. /*               Parameter : den X-Wert,                                  */
  804. /*                           den Y-Wert.                                  */
  805. /*========================================================================*/
  806.  
  807.         void far LineRel256    (int XAdd, int YAdd);
  808.         void far LineTo256     (int X2, int Y2);
  809.  
  810. /*========================================================================*/
  811. /*                      Funktion    L O A D P I C                         */
  812. /*------------------------------------------------------------------------*/
  813. /*   Bringt einen zuvor abgespeicherten Bildschirmausschnitt auf den      */
  814. /*     Bildschirm und gibt den reservierten Speicherbereich wieder frei.  */
  815. /*   Parameter: die linke obere Ecke der gewünschten Position (X,Y)       */
  816. /*              die Nummer des Puffers, in dem das Bild zuvor gespeichert */
  817. /*                  wurde (0 - 9).                                        */
  818. /*              Soll der Bildpuffer freigegeben werden : FREE (0)         */
  819. /*                                                       HOLD (1).        */
  820. /*   Rückgabewert: 0 - alles lief ordnungsgemäß ab                        */
  821. /*                 1 - Speicher wurde vorher nicht reserviert             */
  822. /*========================================================================*/
  823.  
  824.         int  far LoadPic       (int X, int Y, int PufferNr,
  825.                     int FreeBuffer);
  826.  
  827. /*========================================================================*/
  828. /*                 Funktion   M A K E C A R E T                           */
  829. /*------------------------------------------------------------------------*/
  830. /*   Initialisiert den Textcursor (Caret) und legt grundsätzliche         */
  831. /*      Parameter fest.                              */
  832. /*   Parameter: das Erscheinungsbild     : 0 - BLOCK (Blockform)          */
  833. /*                                         1 - V_LINE (Vertikale Linie)   */
  834. /*                                         2 - U_LINE (Unterlinie)        */
  835. /*              die Farbe (0 - 255)                                       */
  836. /*              die Blinkgeschwindigkeit : 2 - 20 oder Konstanten:        */
  837. /*                                         SLOW  (20),                    */
  838. /*                                         MEDIUM (12),                   */
  839. /*                                         FAST (3).                      */
  840. /*              die X-Koordinate und                                      */
  841. /*              die Y-Koordinate, an der das Caret zum ersten Mal         */
  842. /*                                         erscheinen soll.               */
  843. /*              der Font, mit dem der String, hinter dem das Caret steht, */
  844. /*                                            dargestellt wird.           */
  845. /*========================================================================*/
  846.  
  847.         void far MakeCaret     (int CretType, unsigned char Farbe,
  848.                     int Blink_Time, int Caret_X,
  849.                     int Caret_Y, int Caret_Font);
  850.  
  851. /*========================================================================*/
  852. /*         Funktionen    M O V E T O 2 5 6 ,   M O V E R E L 2 5 6        */
  853. /*------------------------------------------------------------------------*/
  854. /*   MoveTo256 : Bewegt den Graphik-Cursor auf die Position X,Y.          */
  855. /*               Parameter : die neue X-Position,                         */
  856. /*                           die neue Y-Position des Cursors              */
  857. /*   MoveRel256: Bewegt den Cursor um die in den Parametern angebenenen   */
  858. /*               Längen weiter.                                           */
  859. /*               Parameter: den Wert, um den der Cursor in der X-Richtung,*/
  860. /*                          den Wert, um den der Cursor in der Y-Richtung */
  861. /*                             weiterbewegt werden soll                   */
  862. /*========================================================================*/
  863.  
  864.         void far MoveRel256    (unsigned int XAdd, unsigned int YAdd);
  865.         void far MoveTo256     (unsigned int NewX, unsigned int NewY);
  866.  
  867. /*========================================================================*/
  868. /*              Funktionen    O U T T X T X Y ,   O U T T X T             */
  869. /*------------------------------------------------------------------------*/
  870. /*   Geben einen Text auf dem Bildschirm aus.                             */
  871. /*      Position des Texts: OutTxtXY : an der angegebenen Position        */
  872. /*                          OutTxt   : an der aktuellen Cursorposition.   */
  873. /*   Obligatorische Parameter: der Text                                   */
  874. /*                             Spaltenposition (nur OutTxtXY)             */
  875. /*                             Zeilenposition  (nur OutTxtXY)             */
  876. /*   Optionale Parameter     : Die Nummer eines hervorzuhebenden Buch-    */
  877. /*                               staben (Zählung beginnt mit 1)           */
  878. /*                             Die Farbe des hervorzuhebenden Buchstabens */
  879. /*========================================================================*/
  880.  
  881.         void far OutTxt        (char far *Text, ...);
  882.         void far OutTxtXY      (char far *Text, int X, int Y, ...);
  883.  
  884. /*========================================================================*/
  885. /*                     Funktion    P E L P A N S P L I T                  */
  886. /*------------------------------------------------------------------------*/
  887. /*   Begrenzt die Wirkung des Horizontal Pixel Panning Registers auf      */
  888. /*       einen oberen Teil des Bildschirms.                               */
  889. /*   Parameter : keine.                                                   */
  890. /*------------------------------------------------------------------------*/
  891. /*   Bemerkung : Diese Funktion wird für das horizontale Scrolling des    */
  892. /*               oberen Bildschirmteils verwendet.                        */
  893. /*========================================================================
  894.  
  895. extern         void far PelPanSplit   ();
  896.  
  897.   ========================================================================*/
  898. /*                       Funktion   P I C S I Z E                         */
  899. /*------------------------------------------------------------------------*/
  900. /*   Bestimmt die Anzahl an Bytes, die für die Speicherung eines Bild-    */
  901. /*       schirmasuschnittes notwendig sind.                               */
  902. /*   Parameter : die Koordinaten des Bildschirmausschnittes,              */
  903. /*   Rückgabe  : den erforderlichen Speicherbedarf in Bytes.              */
  904. /*========================================================================
  905.  
  906. extern unsigned    int  far PicSize       (int X1, int Y1, int X2, int Y2);
  907.  
  908.   ========================================================================*/
  909. /*                     Funktion    P O I N T F I L L                       */
  910. /*------------------------------------------------------------------------*/
  911. /*   Füllt einen umschlossenen Bereich mit einer Farbe.                   */
  912. /*   Parameter : Einstiegsspalte (X)                                      */
  913. /*               Einstiegszeile  (Y)                                      */
  914. /*               die Füllfarbe   (Farbe)                                  */
  915. /*               die Randfarbe   (Rand)                                   */
  916. /*------------------------------------------------------------------------*/
  917. /*   Bemerkung : Dieser Füllalgorithmus arbeitet punktorientiert.         */
  918. /*========================================================================*/
  919.  
  920.         void far PointFill     (int X, int Y, unsigned char Fuellfarbe,
  921.                     unsigned char RandFarbe);
  922.  
  923. /*========================================================================*/
  924. /*                       Funktion   P O L Y G O N                         */
  925. /*------------------------------------------------------------------------*/
  926. /*   Zeichnet die Umrisse eines Polygons.                                 */
  927. /*   Parameter : die Anzahl der Eckpunkte                                 */
  928. /*               ein Array mit den Koordinaten der Eckpunkte.             */
  929. /*========================================================================*/
  930.  
  931.         void far Polygon       (int PunkteZahl, int far *PolyP);
  932.  
  933. /*========================================================================*/
  934. /*                       Funktion   P R B U T T O N                       */
  935. /*------------------------------------------------------------------------*/
  936. /*   Simuliert den Druckvorgang eines Buttons.                            */
  937. /*   Parameter : die linke obere Ecke des Button (X,Y)                    */
  938. /*               die Nummer des Buttons, die ihm beim Aufruf von BUTTON   */
  939. /*                   innerhalb des Arrays BUTTONBUF zugewiesen wurde.     */
  940. /*               die Art der Aktion, die mit dem Button stattfinden soll: */
  941. /*                   1) PRESS (-1), Knopf wird nur gedrückt,              */
  942. /*                   2) RELEASE (1), Knopf wird nur losgelassen,          */
  943. /*                   3) BOTH (0), Knopf vollführt beide Aktionen.         */
  944. /*========================================================================*/
  945.  
  946.         void far PrButton      (int X, int Y, int BufNr, int Action);
  947.  
  948. /*========================================================================*/
  949. /*                       Funktion   P U T P I C T U R E                   */
  950. /*------------------------------------------------------------------------*/
  951. /*   Bringt einen zuvor abgespeicherten Bildausschnitt wieder auf den     */
  952. /*      Bildschirm.                                                       */
  953. /*   Parameter : die linke obere Ecke des Ausschnitts (X,Y)               */
  954. /*               Zeiger auf den Puffer, in dem der Ausschnitt gespeichert */
  955. /*                  wurde.                                                */
  956. /*========================================================================
  957.  
  958. extern         void far PutPicture    (int X, int Y, void far *Puffer);
  959.  
  960.   ========================================================================*/
  961. /*                       Funktion   P U T P I X                           */
  962. /*------------------------------------------------------------------------*/
  963. /*   Setzt einen Bildpunkt.                                               */
  964. /*   Parameter : die Koordinaten des Punktes                              */
  965. /*               die Farbe des Punktes                                    */
  966. /*========================================================================
  967.  
  968. extern          void far PutPix        (int Spalte, int Zeile,
  969.                     unsigned char Farbe);
  970.  
  971.   ========================================================================*/
  972. /*                  Funktion    R E A D P A L B L O C K                   */
  973. /*------------------------------------------------------------------------*/
  974. /*   Liest einen Block von Werten aus den Palettenregistern in ein Array. */
  975. /*   Parameter : der Name des Arrays, das die Werte aufnimmt              */
  976. /*               der erste zu lesende Register                            */
  977. /*               die Anzahl der zu lesenden Register                      */
  978. /*------------------------------------------------------------------------*/
  979. /*   Bemerkung: Das Array muß folgendes Aussehen haben :                  */
  980. /*              ArrayName [NrOfRegs][3];                                  */
  981. /*              Ist das Array zu klein, kann es zu einem Systemabsturz    */
  982. /*                kommen.                                                 */
  983. /*========================================================================*/
  984.  
  985.         void far ReadPalBlock  (palarray PalArray, int FirstReg,
  986.                     int NrOfRegs);
  987.  
  988. /*=========================================================================*/
  989. /*                           Funktion  R E C T                             */
  990. /*-------------------------------------------------------------------------*/
  991. /*   Zeichnet ein leeres Rechteck mit den Koordinaten:                     */
  992. /*      X1,Y1    linkes oberes Eck,                                        */
  993. /*      X2,Y2    rechtes unteres Eck.                                      */
  994. /*      Die Farbe entspricht der aktuellen Vordergrundfarbe.               */
  995. /*=========================================================================*/
  996.  
  997.         void far Rect          (int X1, int Y1, int X2, int Y2);
  998.  
  999. /*========================================================================*/
  1000. /*                  Funktion    R E S T O R E A C T P A L                 */
  1001. /*------------------------------------------------------------------------*/
  1002. /*   Stellt die zuvor aktiv gewesene Farbpalette wieder her.              */
  1003. /*   Parameter : SOFT (1) : Palette wird übergangsmäßig ausgetauscht      */
  1004. /*               PENG (0) : Palette wird plötzlich ausgetauscht           */
  1005. /*   Bemerkung : Dem Aufruf von RESTORACTPAL muß ein Aufruf von           */
  1006. /*               SAVEACTIVEPAL vorausgegangen sein!                       */
  1007. /*========================================================================*/
  1008.  
  1009.         void far RestoreActPal (int ChangeMode);
  1010.  
  1011. /*========================================================================*/
  1012. /*                Funktion    R E S T O R E B I O S P A L                 */
  1013. /*------------------------------------------------------------------------*/
  1014. /*   Restauriert eine möglicherweise veränderte BIOS-Farbpalette.         */
  1015. /*   Parameter : SOFT (1) : Palette wird übergangsmäßig ausgetauscht      */
  1016. /*               PENG (0) : Palette wird plötzlich ausgetauscht           */
  1017. /*   Bemerkung : diese Routine wird bei der Beendigung des 256-Farben-    */
  1018. /*               Modus automatisch aufgerufen.                            */
  1019. /*========================================================================*/
  1020.  
  1021.         void far RestoreBIOSPal(int ChangeMode);
  1022.  
  1023. /*=========================================================================*/
  1024. /*               Funktion  R E S T O R E T E X T M O D E                   */
  1025. /*-------------------------------------------------------------------------*/
  1026. /*   Stellt den Textmodus, der vor dem 256-Farben-Grafikmodus aktiv war,   */
  1027. /*   wieder her, gibt den Grafikspeicher aber nicht frei.                  */
  1028. /*=========================================================================*/
  1029.  
  1030.         void far RestoreTextMode();
  1031.  
  1032. /*========================================================================*/
  1033. /*                  Funktion    S A V E A C T I V E P A L                 */
  1034. /*------------------------------------------------------------------------*/
  1035. /*   Speichert die gerade aktive Farbpalette in dem Array PALETTE,        */
  1036. /*     um sie später wieder restaurieren zu können (siehe RESTOREACTPAL). */
  1037. /*   Parameter : keine.                                                   */
  1038. /*========================================================================*/
  1039.  
  1040.         void far SaveActivePal ();
  1041.  
  1042. /*========================================================================*/
  1043. /*                  Funktion    S A V E B I O S P A L                     */
  1044. /*------------------------------------------------------------------------*/
  1045. /*   Liest die gesamte BIOS-Farbpalette in ein Array, damit sie später    */
  1046. /*      wieder restauriert werden kann (siehe RESTOREBIOSPAL).            */
  1047. /*   Parameter : keine.                                                   */
  1048. /*   Bemerkung : diese Routine wird bei der Initialisierung des 256-      */
  1049. /*               Farben-Modus automatisch aufgerufen.                     */
  1050. /*========================================================================*/
  1051.  
  1052.         void far SaveBIOSPal   ();
  1053.  
  1054. /*========================================================================*/
  1055. /*                      Funktion    S A V E P I C                         */
  1056. /*------------------------------------------------------------------------*/
  1057. /*   Berechnet die Größe eines Bildschirmausschnittes, reserviert         */
  1058. /*     Speicher für ihn und speichert ihn in einen Puffer.                */
  1059. /*   Parameter: die Koordinaten des Bildschirmausschnittes (X1,Y1,X2,Y2)  */
  1060. /*              die Nummer des Puffers (es stehen 10 (0-9) Puffer mit dem */
  1061. /*                  Namen SPEICHER zur Verfügung)                         */
  1062. /*   Rückgabewert: 0 - Reservierung des Speichers okay                    */
  1063. /*                 1 - Speicher konnte nicht reserviert werden            */
  1064. /*   Bemerkung : die Breite des Bildschirmausschnittes muß mindestens     */
  1065. /*               6 Pixel betragen!
  1066. /*========================================================================*/
  1067.  
  1068.         int  far SavePic       (int X1, int Y1, int X2, int Y2,
  1069.                     int PufferNr);
  1070.  
  1071. /*========================================================================*/
  1072. /*                         Funktion   S C R O L L                         */
  1073. /*------------------------------------------------------------------------*/
  1074. /*   Bewegt den Bildschirm in vertikaler, horizontaler und diagonaler     */
  1075. /*     Richtung.                                                          */
  1076. /*   Parameter: Pixelzahl, um die gescrollt werden soll (ScrollZahl)      */
  1077. /*              Horizontale Schrittweite (HorizStep)                      */
  1078. /*                ( < 0 : nach links, > 0 : nach rechts )                 */
  1079. /*              Vertikale Schrittweite (VertiStep)                        */
  1080. /*                ( < 0 : nach oben, > 0 : nach unten )                   */
  1081. /*   Bemerkung: Beim Scrollen um eine oder mehrere ganze Seiten wird auch */
  1082. /*              die sichtbare Seite (VISPAGE) angeglichen.                */
  1083. /*========================================================================*/
  1084.  
  1085.         void far Scroll        (int ScrollZahl, int HorizStep,
  1086.                     int VertiStep);
  1087.  
  1088. /*=========================================================================*/
  1089. /*                      Funktion  S E T 2 5 6 M O D E                      */
  1090. /*-------------------------------------------------------------------------*/
  1091. /*   Schaltet vom Textmodus, der vor INIT256 aktiv war und wieder          */
  1092. /*   aktiviert wurde, neuerlich in den 256-Farben-Grafikmodus zurück.      */
  1093. /*   Der Grafikmodus muß also vorher schon einmal mit INIT256 initiali-    */
  1094. /*   worden sein!                                                          */
  1095. /*=========================================================================*/
  1096.  
  1097.         void far Set256Mode    ();
  1098.  
  1099. /*========================================================================*/
  1100. /*                     Funktion    S E T A C T P A G E                    */
  1101. /*------------------------------------------------------------------------*/
  1102. /*   Legt jene Bildschirmseite fest, auf die bei den nachfolgenden        */
  1103. /*      Operationen geschrieben wird.                                     */
  1104. /*   Parameter: die Nummer der Bildschirmseite                            */
  1105. /*   Hinweis: bei jedem Wechsel der aktiven Bildschirmseite wird auto-    */
  1106. /*            matisch das Zeichenfenster mit den Standardwerten einge-    */
  1107. /*            stellt.                                                     */
  1108. /*========================================================================*/
  1109.  
  1110.         void far SetActPage    (int PageNr);
  1111.  
  1112. /*========================================================================*/
  1113. /*                Funktion   S E T B A C K W R I T I N G                  */
  1114. /*------------------------------------------------------------------------*/
  1115. /*   Bestimmt, ob bei OUTTEXT und OUTTEXTXY auch der Hintergrund des      */
  1116. /*      Textes mitgeschrieben werden soll.                                */
  1117. /*   Parameter : 0 oder 1 (ON oder OFF)                                   */
  1118. /*========================================================================*/
  1119.  
  1120.         void far SetBackWriting(int OnOff);
  1121.  
  1122. /*========================================================================*/
  1123. /*                     Funktion    S E T B C O L O R                      */
  1124. /*------------------------------------------------------------------------*/
  1125. /*   Setzt die aktuelle Hintergrundfarbe.                                 */
  1126. /*   Parameter: die Farbe.                                                */
  1127. /*========================================================================*/
  1128.  
  1129.         void far SetBColor     (unsigned char Farbe);
  1130.  
  1131. /*========================================================================*/
  1132. /*                   Funktion    S E T D E F A U L T S                    */
  1133. /*------------------------------------------------------------------------*/
  1134. /*   Setzt alle Einstellungen auf den Standard zurück.                    */
  1135. /*========================================================================*/
  1136.  
  1137.         void far SetDefaults   ();
  1138.  
  1139. /*========================================================================*/
  1140. /*                     Funktion    S E T F C O L O R                      */
  1141. /*------------------------------------------------------------------------*/
  1142. /*   Setzt die aktuelle Vordergrundfarbe.                                 */
  1143. /*   Parameter: die Farbe.                                                */
  1144. /*========================================================================*/
  1145.  
  1146.         void far SetFColor     (unsigned char Farbe);
  1147.  
  1148. /*=========================================================================*/
  1149. /*                         Funktion  S E T L I N E                         */
  1150. /*-------------------------------------------------------------------------*/
  1151. /*   Setzt die Linienbreite für nachfolgende Zeichenoperationen.           */
  1152. /*   Parameter : die Linienbreite                                          */
  1153. /*                   ( 1 : normal breit,                                   */
  1154. /*                     2 : doppelt breit,                                  */
  1155. /*                     3 : sehr breit. )                                   */
  1156. /*   Voreingestellt ist normal breit (1).
  1157. /*=========================================================================*/
  1158.  
  1159.         void far SetLine       (int Style);
  1160.  
  1161. /*========================================================================*/
  1162. /*                     Funktion    S E T N E W P A L                      */
  1163. /*------------------------------------------------------------------------*/
  1164. /*   Schreibt die Werte für eine komplette Farbpalette in die Farb-       */
  1165. /*      register.                                                         */
  1166. /*   Parameter : 1) entweder ein voller Dateiname mit der Erweiterung .PAL*/
  1167. /*                        für eine Datei, die die Farbwerte enthält,      */
  1168. /*                  oder  "BIOS", worauf die BIOS-Farbpalette geladen     */
  1169. /*                        wird.                                           */
  1170. /*               2) SAVE (1) oder NO_SAVE (0), je nachdem, ob die neue    */
  1171. /*                  Palette in das Array ACTPAL, das die gerade aktive    */
  1172. /*                  Farbpalette enthält, geladen werden soll.             */
  1173. /*               3) SOFT (1) : Palette wird übergangsmäßig ausgetauscht   */
  1174. /*                  PENG (0) : Palette wird plötzlich ausgetauscht        */
  1175. /*========================================================================*/
  1176.  
  1177.         int  far SetNewPal     (char far *PalFile, int Save,
  1178.                     int ModeOfChange);
  1179.  
  1180. /*========================================================================*/
  1181. /*                  Funktion    S E T P A G E L A Y O U T                 */
  1182. /*------------------------------------------------------------------------*/
  1183. /*   Legt die Anordnung der 4 Bildschirmseiten fest.                      */
  1184. /*   Parameter: die Art der Anordnung (siehe unten)                       */
  1185. /*   Bemerkung: Die erste Seite ist die aktive und sichtbare Seite.       */
  1186. /*------------------------------------------------------------------------*/
  1187. /*           VERT : 0         HORIZ : 0123            DIAGON : 01         */
  1188. /*                1                                          23         */
  1189. /*                2                                                     */
  1190. /*                  3                                                     */
  1191. /*========================================================================*/
  1192.  
  1193.         void far SetPageLayout    (int Layout);
  1194.  
  1195. /*========================================================================*/
  1196. /*                    Funktion    S E T P A L B L O C K                   */
  1197. /*------------------------------------------------------------------------*/
  1198. /*   Schreibt einen Block von Werten aus einem Array in die angegebenen   */
  1199. /*     Palettenregister.                                                  */
  1200. /*   Parameter : der Name des Arrays, von dem die Werte stammen           */
  1201. /*               der erste zu belegende Register                          */
  1202. /*               die Anzahl der zu belegenden Register                    */
  1203. /*------------------------------------------------------------------------*/
  1204. /*   Bemerkung: Das Array muß folgendes Aussehen haben :                  */
  1205. /*              ArrayName [NrOfRegs][3];                                  */
  1206. /*              Ist das Array zu klein, werden ungewünschte Werte in die  */
  1207. /*                Register geladen.                                       */
  1208. /*========================================================================*/
  1209.  
  1210.         void far SetPalBlock   (palarray PalArray, int FirstReg,
  1211.                     int NrOfRegs);
  1212.  
  1213. /*========================================================================*/
  1214. /*                    Funktion    S E T P A L R E G                       */
  1215. /*------------------------------------------------------------------------*/
  1216. /*   Belegt eines der 256 Farbregister.                                   */
  1217. /*   Parameter : die Nummer des Farbregisters (0 - 255)                   */
  1218. /*               der Rotanteil der neuen Farbe (0 - 63)                   */
  1219. /*               der Grünanteil der neuen Farbe (0 - 63)                  */
  1220. /*               der Blauanteil der neuen Farbe (0 - 63)                  */
  1221. /*========================================================================*/
  1222.  
  1223.         void far SetPalReg     (int FarbNr,
  1224.                     int Rot, int Gruen, int Blau);
  1225.  
  1226. /*========================================================================*/
  1227. /*                    Funktion    S E T S C R W I D T H                   */
  1228. /*------------------------------------------------------------------------*/
  1229. /*   Stellt die Breite des virtuellen Bildschirms ein.                    */
  1230. /*   Parameter : die Bildschirmbreite (80 - 320)                          */
  1231. /*   Bemerkung : 80 Bytes pro Zeile entspricht einer Bildschirmseite.     */
  1232. /*========================================================================
  1233.  
  1234. extern         void far SetScrWidth   (int Schirmbreite);
  1235.  
  1236.   ========================================================================*/
  1237. /*                    Funktion    S E T S C R X Y                         */
  1238. /*------------------------------------------------------------------------*/
  1239. /*   Legt die linke obere Ecke des virtuellen Bildschirms fest.           */
  1240. /*   Parameter : die linke obere Bildschirmecke (X,Y)                     */
  1241. /*========================================================================*/
  1242.  
  1243.         void far SetScrXY      (int X, int Y);
  1244.  
  1245. /*========================================================================*/
  1246. /*                    Funktion    S E T S P L I T                         */
  1247. /*------------------------------------------------------------------------*/
  1248. /*   Legt die Zeile für den geteilten Bildschirm fest.                    */
  1249. /*   Parameter : die Zeile, ab der der Bildschirm geteilt werden soll.    */
  1250. /*========================================================================
  1251.  
  1252. extern         void far SetSplit      (int Zeile);
  1253.  
  1254.   ========================================================================*/
  1255. /*                    Funktion    S E T S T A N D P A L                   */
  1256. /*------------------------------------------------------------------------*/
  1257. /*   Verändert einen Eintrag in der Palette Nr. 0 - 15.                   */
  1258. /*   Parameter : die Farbe die neu gesetzt werden soll,                   */
  1259. /*               die Farbnummer, statt der die neue Farbe erscheinen soll.*/
  1260. /*========================================================================
  1261.  
  1262. extern          void far SetStandPal   (unsigned char ColorWish,
  1263.                     unsigned char ColorNum);
  1264.  
  1265.   ========================================================================*/
  1266. /*                  Funktion   S E T T X T J U S T I F Y                  */
  1267. /*------------------------------------------------------------------------*/
  1268. /*   Legt die horizonate und vertikale Textausrichtung für OUTTEXTXY und  */
  1269. /*       OUTTEXT fest.                                                    */
  1270. /*   Parameter: die Art der horizontalen Textausrichtung:                 */
  1271. /*                     linksbündig  (-1, LEFT)                            */
  1272. /*                     rechtsbündig (1 , RIGHT)                           */
  1273. /*                     zentriert    (0 , CENTER).                         */
  1274. /*              die Art der vertikalen Textausrichtung:                   */
  1275. /*                     obenbündig   (-1, TOP)                             */
  1276. /*                     untenbündig  (1 , BOTTOM)                          */
  1277. /*                     mittig       (0 , CENTER).                         */
  1278. /*                                                                        */
  1279. /*   Voreingestellt ist linksbündig und obenbündig.                       */
  1280. /*========================================================================*/
  1281.  
  1282.         void far SetTxtJustify (int JustifyW, int JustifyH);
  1283.  
  1284. /*========================================================================*/
  1285. /*                       Funktion   S E T T X T S T Y L E                 */
  1286. /*------------------------------------------------------------------------*/
  1287. /*   Lädt einen Zeichensatz.                                              */
  1288. /*   Parameter : der Zeichensatz (0 - DEFAULT.FNT, 1 - SMALL.FNT)         */
  1289. /*                               (2 - ROM.FNT,     3 - LIGHT.FNT)         */
  1290. /*   Rückgabe : 0, wenn alles erfolgreich verläuft,                       */
  1291. /*              -1 im Fehlerfalle.                                        */
  1292. /*========================================================================*/
  1293.  
  1294.         int  far SetTxtStyle   (int Font);
  1295.  
  1296. /*========================================================================*/
  1297. /*                      Funktion    S E T V I E W P                       */
  1298. /*------------------------------------------------------------------------*/
  1299. /*   Bestimmt die Koordinaten eines Sichtfensters. Voreingestellt ist     */
  1300. /*      der gesamte Bildschirm, also 0,0,319,199. Die anzugebenden Werte  */
  1301. /*      müssen innerhalb dieser Grenzen liegen.                           */
  1302. /*      Der 5.Parameter bestimmt die Art des Clipping, d.h. ob über die   */
  1303. /*      Sichtfenster hinaus geszeichnet werden soll. Voreingestellt ist   */
  1304. /*      aktives Clipping.                                                 */
  1305. /*   Parameter: die Koordinaten des Sichtfensters (X1,Y1,X2,Y2)           */
  1306. /*              das Clipping (0 für aus, 1 für ein).                      */
  1307. /*========================================================================*/
  1308.  
  1309.         void far SetViewP      (int X1, int Y1, int X2, int Y2,
  1310.                     int ClippJN);
  1311.  
  1312. /*========================================================================*/
  1313. /*                     Funktion    S E T V I S P A G E                    */
  1314. /*------------------------------------------------------------------------*/
  1315. /*   Legt jene Bildschirmseite fest, die sichtbar ist.                    */
  1316. /*   Parameter: die Nummer der Bildschirmseite                            */
  1317. /*   Bemerkung: Diese Funktion legt die gewählte Bildschirmseite immer    */
  1318. /*              an ihre standardmäßige linke obere Ecke (z.B die erste,   */
  1319. /*              Nr.0, an die Position (0/0) usw.). Sollte eine andere,    */
  1320. /*              dazwischen liegende, gewünscht sein, muß dies NACHHER     */
  1321. /*              mit der Funktion SETSCRXY eingestellt werden.             */
  1322. /*========================================================================*/
  1323.  
  1324.         void far SetVisPage    (int PageNr);
  1325.  
  1326. /*========================================================================*/
  1327. /*                     Funktion    S E T W R I T E M O D                  */
  1328. /*------------------------------------------------------------------------*/
  1329. /*  Stellt den Verknüpfungsmodus der Zeichen-Operationen mit dem          */
  1330. /*     vorhandenen Hintergrund ein.                                       */
  1331. /*  Parameter: der Verknüpfungsmodus:                                     */
  1332. /*             0 (COPY)   : die neue Zeichnung überschreibt Hintergrund   */
  1333. /*             1 (DO_AND) : AND-Verknüpfung zw. neuer Zeichnung und       */
  1334. /*                    Hintergrund                                   */
  1335. /*             2 (DO_OR)  : OR-Verknüpfung zw. neuer Zeichnung und        */
  1336. /*                    Hintergrund                                   */
  1337. /*             3 (DO_XOR) : XOR-Verknüpfung zw. neuer Zeichnung und       */
  1338. /*                    Hintergrund                                   */
  1339. /*========================================================================
  1340.  
  1341. extern          void far SetWriteMod   (char Mode);
  1342.  
  1343.   ========================================================================*/
  1344. /*                  Funktion   S H I F T P G O V E R P G                  */
  1345. /*------------------------------------------------------------------------*/
  1346. /*   Schiebt die erste Bildschirmseite über die gerade aktive Bildschirm- */
  1347. /*       seite.                                                           */
  1348. /*   Parameter: die Startzeile des Schiebevorgangs (auf dieser Start-     */
  1349. /*                 zeile kommt die erste Zeile der ersten Bildschirmseite */
  1350. /*                 zu liegen, dann wird geschoben) (0 - 199)              */
  1351. /*              die Endzeile des Schiebevorgangs (nach der Schiebung      */
  1352. /*                 liegt die erste Zeile der ersten Bildschirmseite auf   */
  1353. /*                 dieser Zeile) (0 - 199)                                */
  1354. /*              die Richtung des Schiebevorgangs (UP, DOWN)               */
  1355. /*              ob die sichtbare Bildschirmseite gewechselt werden soll   */
  1356. /*                 (CHANGE - 1, NO_CHANGE - 0)                            */
  1357. /*   Bemerkung: Der letzte Parameter wird nur dann beachtet, wenn die 1.  */
  1358. /*              Bildschirmseite VOLLSTÄNDIG und NACH OBEN verschoben wird.*/
  1359. /*========================================================================*/
  1360.  
  1361.         void far ShiftPgOverPg (int StartLine, int EndLine,
  1362.                     int Direction, int ChangeVisPage);
  1363.  
  1364. /*========================================================================*/
  1365. /*                Funktion   S O F T D A R K E N S C R E E N              */
  1366. /*------------------------------------------------------------------------*/
  1367. /*   Verdunkelt langsam den Bildschirm.                                   */
  1368. /*   Parameter: 0 , wenn Programm nach der Funktion NICHT beendet wird,   */
  1369. /*              1 , wenn Programm nach der Funktion beendet wird.         */
  1370. /*   Bemerkung: siehe Makro SOFTLIGHTSCREEN.                              */
  1371. /*========================================================================*/
  1372.  
  1373.         void far SoftDarkenScreen(int Exit);
  1374.  
  1375. /*========================================================================*/
  1376. /*                         Funktion  T U R N S C R E E N                  */
  1377. /*------------------------------------------------------------------------*/
  1378. /*    Schaltet den Bildschirm ein oder aus.                               */
  1379. /*    Parameter : ON (1) oder                                             */
  1380. /*                OFF (0).                                                */
  1381. /*========================================================================
  1382.  
  1383. extern          void far TurnScreen    (char OnOff);
  1384.  
  1385.   ========================================================================*/
  1386. /*                         Funktion  V L I N E                            */
  1387. /*------------------------------------------------------------------------*/
  1388. /*    Zeichnet eine vertikale Linie.                                      */
  1389. /*    Die Farbe der Linie entspricht der aktuellen Vordergrundfarbe.      */
  1390. /*    Parameter : der Anfangspunkt (X,Y1)                                 */
  1391. /*                der Endpunkt (X,Y2)                                     */
  1392. /*========================================================================*/
  1393.  
  1394.         void far VLine         (int X, int Y1, int Y2);
  1395.  
  1396. /*========================================================================*/
  1397. /*       Funktionen  W A I T D I S P L A Y ,  W A I T V R E T R A C E     */
  1398. /*------------------------------------------------------------------------*/
  1399. /*    Wartet auf die nächste Zeichenperiode (WAITDISPLAY) oder auf die    */
  1400. /*       nächste vertikale Strahlenrücklaufperiode (WAITVRETRACE) der     */
  1401. /*       Bildschirm-Hardware.                                             */
  1402. /*    Parameter : keine.                                                  */
  1403. /*========================================================================
  1404.  
  1405. extern         void far WaitDisplay   ();
  1406. extern         void far WaitVRetrace  ();
  1407.  
  1408.   ========================================================================*/
  1409. /*                       Funktion    W I N D O W                          */
  1410. /*------------------------------------------------------------------------*/
  1411. /*   Zeichnet ein rechteckiges Fenster mit verschiedener Randstärke (1 -  */
  1412. /*      3 Pixel) und einem Kopfteil mit Beschriftung.                     */
  1413. /*   Parameter : die Koordinaten des Fensters (X1,Y1,X2,Y2)               */
  1414. /*               die Dicke der Fenster-Umrandung (1 - 3)                  */
  1415. /*               die Farbe des Randes (0 - 255)                           */
  1416. /*               die Hauptfarbe des Fensters (0 - 255)                    */
  1417. /*               der Text der Beschriftung                                */
  1418. /*               ob mit oder ohne Schatten (0,1)                          */
  1419. /*               die Nummer des Puffers, in dem der Fensterhintergrund    */
  1420. /*                  gespeichert werden soll (0 - 9).                      */
  1421. /*                  Sollte eine Speicherung nicht erwünscht sein, muß -1  */
  1422. /*                  angegeben werden.                                     */
  1423. /*------------------------------------------------------------------------*/
  1424. /*   Bemerkung: Doppelbelegungen der Speicherpuffer können zu Fehl-       */
  1425. /*              funktionen und Systemabstürzen führen.                    */
  1426. /*========================================================================*/
  1427.  
  1428.         void far Window        (int X1, int Y1, int X2, int Y2,
  1429.                     int Randdicke, unsigned char RandF,
  1430.                     unsigned char HauptF,
  1431.                     char far *KopfText, int Schatten,
  1432.                     unsigned char SchattenF,
  1433.                     int SaveHintergrund);
  1434.  
  1435. /*========================================================================*/
  1436. /*                     Funktion    W R I T E A S P C X                    */
  1437. /*------------------------------------------------------------------------*/
  1438. /*   Speichert einen Bildschirmausschnitt im PCX-Format auf das aktuelle  */
  1439. /*      Laufwerk.                                                         */
  1440. /*   Parameter : die Koordinaten des Bildschirmausschnitts (X1,Y1,X2,Y2)  */
  1441. /*               den Dateinamen (die Erweiterung .PCX muß nicht unbedingt */
  1442. /*                  angegeben werden.)                                    */
  1443. /*   Bemerkung : Tritt ein Fehler während des Speicherns auf, so wird -1  */
  1444. /*                 zurückgegeben, ansonsten 0.                            */
  1445. /*               Alle schon vorher aufgetretenen Fehlercodes werden ge-   */
  1446. /*                 löscht.                                                */
  1447. /*========================================================================*/
  1448.  
  1449.         int  far WriteAsPCX    (int X1, int Y1, int X2, int Y2,
  1450.                     char far *FileName);
  1451.  
  1452. /*========================================================================*/
  1453. /*                      Funktion   L I G H T S C R E E N                  */
  1454. /*------------------------------------------------------------------------*/
  1455. /*    Erhellt den Bildschirm durch langsames Überführen einer schwarzen   */
  1456. /*       in die gewünschte Farbpalette.                                   */
  1457. /*    Parameter : den Namen der Funktion, die in der Schwarzperiode den   */
  1458. /*                   Bildschirm , der dann erhellt wird, beschreibt.      */
  1459. /*                die Art des Erhellens:                                  */
  1460. /*                   SOFT : jede Farbe wird sukzessive heller.            */
  1461. /*                   VERYSOFT : die Erhellung erfolgt zuerst mit Grau-    */
  1462. /*                              werten, zuletzt bilden sich dann die      */
  1463. /*                              Farben aus.                               */
  1464. /*    Bemerkung : die Parameter-Funktion muß vorher definiert werden,     */
  1465. /*                  wenn sie auch leer ist.                               */
  1466. /*========================================================================*/
  1467.  
  1468.         void far LightScreen (void (*Func)(), int Mode);
  1469.  
  1470. /*=========================================================================*/